package com.example.smartwaterapi.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 用户成就记录实体类
 */
@Data
@TableName(value = "user_achievements", autoResultMap = true)
public class UserAchievement implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 成就ID
     */
    private Long achievementId;

    /**
     * 是否完成
     */
    private Integer isCompleted;

    /**
     * 完成时间
     */
    private LocalDateTime completedAt;

    /**
     * 当前进度
     */
    private Integer currentProgress;

    /**
     * 目标进度
     */
    private Integer targetProgress;

    /**
     * 进度详细数据
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Object progressData;

    /**
     * 完成次数
     */
    private Integer completionCount;

    /**
     * 最后完成时间
     */
    private LocalDateTime lastCompletedAt;

    /**
     * 最佳记录
     */
    private Integer bestRecord;

    /**
     * 是否已领取奖励
     */
    private Integer rewardsClaimed;

    /**
     * 领取时间
     */
    private LocalDateTime claimedAt;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
} 